import cv2
import numpy
import qrcode
import zxing
from MyQR import myqr
from PIL import Image
from pyzbar import pyzbar


def generate_qr_code_MyQR(data, back_img_file, file):
    """
    生成二维码
    :param data: 二维码内容
    :param back_img_file: 背景图片
    :param file: 保存位置
    :return:
    """
    myqr.run(words=data,
             picture=back_img_file,
             colorized=True,
             save_name=file)


def generate_qr_code_qrcode(data, file, color='black', back_color='white'):
    """
    生成二维码
    :param data: 二维码内容
    :param file: 保存位置
    :param color: 二维码颜色
    :param back_color: 二维码背景色
    :return:
    """
    qr_code = qrcode.QRCode()
    qr_code.add_data(data)
    image = qr_code.make_image(fill_color=color, back_color=back_color)
    image.save(file)


def decode_qr_code_cv2(file):
    cv__imread = cv2.imread(file)
    detector = cv2.QRCodeDetector()
    decode = detector.detectAndDecode(cv__imread)
    print(decode)


def decode_qr_code_pyzbar_cv2(file):
    """
    识别二维码
    无法识别截图，无法识别MyQR包生成
    :param file: 二维码图片文件
    :return:
    """
    cv__imread = cv2.imread(file)
    decode = pyzbar.decode(cv__imread)
    data_decode = decode[0].data.decode('utf-8')
    return data_decode


def decode_qr_code_pyzbar_pil(file):
    """
    识别二维码
    无法识别截图
    :param file: 二维码图片文件
    :return:
    """
    image_open = Image.open(file)
    decode = pyzbar.decode(image_open)
    data_decode = decode[0].data.decode('utf-8')
    return data_decode


def decode_qr_code_pyzbar_ny(file):
    """
    识别二维码
    无法识别截图，无法识别qrcode包生成
    :param file: 二维码图片文件
    :return:
    """
    array = numpy.array(Image.open(file))
    decode = pyzbar.decode(array)
    data_decode = decode[0].data.decode('utf-8')
    print(data_decode)


def decode_qr_code_zxing(file):
    """
    识别二维码，最为强大，截图可识别
    :param file: 二维码图片文件
    :return:
    """
    reader = zxing.BarCodeReader()
    decode = reader.decode(file)
    parsed = decode.parsed
    return parsed


if __name__ == '__main__':
    generate_qr_code_MyQR(
        "ceshi", "./source/sunuannuan.jpg", "./source/ceshia.png")
